package com.ruoyi.projects.service;

import com.ruoyi.common.core.domain.ApiResult;
import com.ruoyi.projects.Vos.WebWxUserInfo;
import com.ruoyi.projects.Vos.WxUserInfoDTO;

import java.text.ParseException;
import java.util.Map;

/**
 * 微信登录以及相关凭证的运用接口
 * 
 * @author yangz
 * @date 2021-09-11
 */
public interface IWxAuthTokenService
{

    /**
     * 网页授权获取code
     */
    void getCode();

    /**
     * 用code换取网页授权accessToken
     * @param code
     * @return
     */
    Map<String, Object> getWebAccessToken(String code);

    /**
     * 用网页授权token和对于的openId获取用户信息
     * @param openid
     * @param accessToken
     * @return
     */
    WebWxUserInfo getWxUserInfo(Object openid, Object accessToken);

    /**
     * 获取微信平台凭证accessToken,
     */
    ApiResult getApiAccessToken() throws ParseException;

    /**
     * 小程序code登录凭证校验
     * @return
     */
    WxUserInfoDTO getMiniCodeSession(String code);

    /**
     * 小程序微信用户信息解密
     * code换取sessionKey
     * iv
     *  encryptedData
     */
    ApiResult unEncryptedIngo(String code,String iv,String encryptedData);

    /**
     * 手机号授权code换取手机号
     */
    ApiResult getUserPhoneNumber(String phoneCode);

}
